//package com.zhuyi.broadcast.service;
//
//import org.redisson.api.RLock;
//import org.redisson.api.RedissonClient;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Service;
//
//@Service
//public class BroadcastScheduler {
//
//    @Autowired
//    private RedissonClient redissonClient;
//
//    private static final String LOCK_KEY = "insert_broadcast_task_lock";
//
//    @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次
//    public void executeInsertBroadcastTasks() {
//        RLock lock = redissonClient.getLock(LOCK_KEY);
//        try {
//            // 尝试加锁，等待时间为10秒，锁定时间为5秒
//            if (lock.tryLock(10, 5, TimeUnit.SECONDS)) {
//                try {
//                    // 进入临界区，执行任务
//                    List<InsertBroadcastTask> tasks = getTasksToExecute();
//                    for (InsertBroadcastTask task : tasks) {
//                        // 发送插播任务到终端设备
//                        sendToDevice(task);
//                        // 更新任务状态
//                        updateTaskStatus(task);
//                    }
//                } finally {
//                    // 任务执行完后释放锁
//                    lock.unlock();
//                }
//            } else {
//                System.out.println("当前节点正在执行任务，跳过此次执行");
//            }
//        } catch (InterruptedException e) {
//            Thread.currentThread().interrupt();
//            e.printStackTrace();
//        }
//    }
//
//    // 获取待执行的插播任务
//    private List<InsertBroadcastTask> getTasksToExecute() {
//        // 查询所有待插播的任务
//        return new ArrayList<>();
//    }
//
//    // 发送插播任务到终端设备
//    private void sendToDevice(InsertBroadcastTask task) {
//        // 发送插播任务的逻辑
//    }
//
//    // 更新任务状态
//    private void updateTaskStatus(InsertBroadcastTask task) {
//        // 更新插播任务的状态为已完成
//    }
//}
